import {
    createAGroupFolder,
    getPlayerData,
    isGroupExist,
    isPlayerExist,
    readConfiguration,
    storagePlayerData
} from '../function/function.js';

export class Bs extends plugin {
    constructor() {
        super({
            name: '[Bs]查看面包',
            dsc: '查看面包',
            event: 'message',
            priority: 1,
            rule: [
                { reg: /^[#\/]查看.*/, fnc: 'viewBread' }
            ]
        })
    }

    async viewBread(e) {
        /** ID [群, 用户, 指定用户] */
        const ID = [e.group_id, e.user_id, e.at]
        /** 用户输入内容 */
        const USER_INPUT_CONTENT = e.msg.replace(/#|\/|查看/g, '')
        /** 配置数据 */
        const configData = await readConfiguration()
        /** 默认物品 */
        let defaultItem = configData['bread_thing']
        /** 自定义物品 */
        const CUSTOM_ITEMS = configData['special_thing_group'][ID[0]]

        // 判断执行条件 [不存在自定义物品 同时 用户输入内容不为默认物品] 或者 [存在自定义物品 同时 用户输入内容不为自定义物品]
        if (!CUSTOM_ITEMS && USER_INPUT_CONTENT !== defaultItem || CUSTOM_ITEMS && USER_INPUT_CONTENT !== CUSTOM_ITEMS) return false
        // 存在自定义物品 默认物品修改为自定义物品
        if (CUSTOM_ITEMS) {
            defaultItem = CUSTOM_ITEMS
        }

        // 非群无法游玩
        if (!e.isGroup) return e.reply(['该游戏只能在群内使用'])

        // 判断是否有此群文件夹，没有则创建
        if (!isGroupExist(ID[0])) { createAGroupFolder(ID[0]) }

        // 判断是否存在该用户，没有则创建基础信息
        if (!isPlayerExist(ID[0], ID[1])) {
            storagePlayerData(ID[0], ID[1], {
                name: e.sender.card || '未设置面包昵称',
                lv: 0,
                xp: 0,
                number: 0,
                cd: { buy: 0, eat: 0, rob: 0, give: 0, bet: 0 },
                log: { buy: [], eat: [], rob: [], give: [], bet: [] }
            })
        }

        /** 返回消息 */
        let msg

        if (!ID[2]) { // 看自己
            /** 用户数据 */
            const USER_DATA = await getPlayerData(ID[0], ID[1])

            msg = `你现在拥有${USER_DATA['number']}个${defaultItem}，等级为Lv.${USER_DATA['lv']}，再吃${configData['level_bread_num'] - USER_DATA['xp']}个可以升级`

            return e.reply([msg], true)
        } else { // 看别人
            // 判断是否存在该用户
            if (!isPlayerExist(ID[0], ID[1])) return e.reply([`没有该用户的${defaultItem}数据呢`])

            /** 用户数据 */
            const USER_DATA = await getPlayerData(ID[0], ID[2])

            msg = `[${USER_DATA['name']}]现在拥有${USER_DATA['number']}个${defaultItem}，等级为Lv.${USER_DATA['lv']}，再吃${configData['level_bread_num'] - USER_DATA['xp']}个可以升级`

            return e.reply([msg], true)
        }
    }
}